package com.hxm.demo.test2;

import java.util.Arrays;

/**
 * description: add a description
 *
 * @author huangxiaoming
 * @version 1.0.0
 * @date 2022/11/03 17:16:45
 */
public class TestSortedSquares {

    /**
     * 977. 有序数组的平方
     *
     * @param args
     */
    public static void main(String[] args) {
        int[] nums = new int[]{-4, -1, 0, 3, 10};
        int[] ints = sortedSquares(nums);
        System.out.println(Arrays.asList(ints));
    }

    /**
     * 给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
     *
     * @param nums
     * @return
     */
    public static int[] sortedSquares(int[] nums) {
        int mid = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] < 0) {
                mid = i;
            } else {
                break;
            }
        }
        int index = 0, i = mid, j = mid + 1;
        int[] result = new int[nums.length];
        while (i >= 0 || j < nums.length) {
            if (i < 0) {
                result[index] = nums[j] * nums[j];
                j++;
            } else if (j >= nums.length) {
                result[index] = nums[i] * nums[i];
                i--;
            } else if (nums[i] * nums[i] >= nums[j] * nums[j]) {
                result[index] = nums[j] * nums[j];
                j++;
            } else {
                result[index] = nums[i] * nums[i];
                i--;
            }
            index++;
        }
        return result;
    }
}
